/*
 * listaArchivos.c
 *
 *  Created on: 01/09/2011
 *      Author: guido
 */

#include "listaArchivos.h"
#include <stdio.h>


int ListaArch_init(ListaArchivos* l, char* ruta) {
	l->pos = -1;
	return ListaArch_agregarArchivo(l, ruta);
}

/* Agrega un archivo, retorna error si se excedio el maximo
 * de archivos, o si se abrio un archivo invalido */
int ListaArch_agregarArchivo(ListaArchivos* l, char* ruta) {
	l->pos++;
	if ((l->pos) > MAX_DE_ARCHIVOS)
		return 1;
	l->archivo[l->pos] = fopen(ruta, "r");
	if (l->archivo[l->pos] == 0) {
		printf("%s", "Archivo inexistente");
		return 1;
	}
	return 0;
}


/* Lee lineas del archivo actual. Si no quedan archivos para leer
 * marca que no quedan mas lineas para leer.
 */
int ListaArch_leer(ListaArchivos* l, char* buffer, int n) {

	int quedanLineas = 1;
	char* resultado = fgets(buffer, MAX_DE_LINEA, l->archivo[l->pos]);
	while ( (resultado == 0) && (quedanLineas) ){
		ListaArch_archivoSiguiente(l);
		if (l->pos < 0) {
			quedanLineas = 0;
		}
		else
			resultado = fgets(buffer, MAX_DE_LINEA, l->archivo[l->pos]);
	}
	return (quedanLineas);
}

/* Cierra y pone en el top al archivo actual a leerse */
void ListaArch_archivoSiguiente(ListaArchivos* l) {
	fclose(l->archivo[l->pos]);
	l->pos--;
}

